MySQL MVCC
#mysql #db
概要
現状のRDBMSではMVCCと言う技術が採用されてることがほとんど。
だが、このMVCCとはなんなのか?MySQL(InnoDB)ではどう言う立ち位置なのかを調べる。
MVCC(MultiVersion Concurrency Control)とは何か
MySQL特有の機能というわけではなく、DBMSに一般的なものです。
トランザクションをロックではなく、スナップショットを使って表現する方法。
REPEATABLE READでは、リピータブルリードを許してないが、これをどう許さないかと言うと...
トランザクションの最初のクエリ時にスナップショットを取っておく。
そうすると、そのトランザクション内での同じような範囲を指すクエリは、実データではなくスナップショットを参照するようになる。
そうすることで、他トランザクションが実データを変更したとしても、リピータブルリードが起きなくなる。
参考
https://shallow1729.hatenablog.com/entry/2021/07/23/090911
MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.2.4 一貫性非ロック読み取り
MySQLにおけるMVCCについて調べてみる - 三流エンジニアの落書き帳